package fr.ul.ade.secunde.util;

import java.io.IOException;
import java.net.MalformedURLException;

import org.xmlpull.v1.XmlPullParserException;

import android.content.Context;
import android.content.res.Resources;
import fr.ul.ade.R;
import fr.ul.ade.secunde.dev.MockComparator;
import fr.ul.ade.secunde.sync.AdeWebInterface;
import fr.ul.ade.secunde.sync.ScheduleComparator;

/**
 * Classe fournissant des méthodes de construction pour divers objets.
 * 
 * @author Michaël Schnell
 * @since Jul 29, 2013
 * 
 * @version 1.3
 */
public class AdeWebFactory {

	/**
	 * Créer une instance de {@link ScheduleComparator}.
	 * 
	 * @param scheduleId
	 *            identifiant de l''emploi du temps
	 * @param context
	 *            poitn d'accès au contexte de l'application
	 * @return instance de {@link ScheduleComparator}
	 */
	public static ScheduleComparator buildComparator(long scheduleId,
			Context context) {
		// FIXME Modifier en GuidComparator à la fin des tests
		return new MockComparator(scheduleId, context);
	}

	/**
	 * Construit et établit un connexion avec l'API d'ADE.
	 * 
	 * @return {@link AdeWebInterface} pour communiquer avec ADE
	 * @throws MalformedURLException
	 *             si une {@code URL} utilisée est invalide
	 * @throws IOException
	 *             si une erreur se produit pendant la connexion
	 * @throws XmlPullParserException
	 *             s'il se produit une erreur lors de la lecture de la réponse
	 *             d'ADE
	 */
	public static AdeWebInterface establishConnection(Context context)
			throws MalformedURLException, IOException, XmlPullParserException {
		AdeWebInterface adeWebInterface = new AdeWebInterface(context);
		Resources res = context.getResources();
		adeWebInterface.connect(res.getString(R.string.ade_login),
				res.getString(R.string.ade_password));
		return adeWebInterface;
	}

	private AdeWebFactory() {
	}

}// class AdeWebFactory